Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current solution for controlling back-navigation in the front- and back-office apps uses the same mechanism as forward-navigation: A state-machine-based workflow definition consisting of a set of permitted transitions, many with conditions based on previous navigation choices by the user. This is complex to maintain and unit test. Recent changes to form flows have exacerbated this.
This change aims to simplify the back-navigation mechanism without modifying the user experience. It does this by maintaining an ordered list of previous forms visited, adding to the list as the user progresses through the forms. When the user navigates back, they are brought to the last form in the list, which is then removed from the list.
In the event that there is an invalid entry in the list, that entry will be skipped, so the user could in theory be brought back more than one step in the flow. If no valid entry is found in the list, they will be brought back to the start form. This is assumed to be acceptable as it should only happen in rare cases, e.g. changes to form navigation impacting a transient registration that was created before the deployment of the change and continued afterwards.
Note that the bulk of the changes are for the removal of the existing hard-wired back-navigation unit tests. The key files for the new mechanism are: